package com.yy.wga.goods.service.api;

import com.alibaba.fastjson.JSONObject;
import com.github.lianjiatech.retrofit.spring.boot.annotation.RetrofitClient;
import com.yy.wga.goods.service.api.request.bind.GetBindSharerListReq;
import com.yy.wga.goods.service.api.request.bind.GetPromoterRegisterAndBindStatusReq;
import com.yy.wga.goods.service.api.request.commission.GetSharerProductCommissionReq;
import com.yy.wga.goods.service.api.request.commission.SetSharerCommissionReq;
import com.yy.wga.goods.service.api.request.commission.SetSharerProductCommissionReq;
import com.yy.wga.goods.service.api.request.feed.GetFeedListReq;
import com.yy.wga.goods.service.api.request.feed.GetFeedPromotionInfoReq;
import com.yy.wga.goods.service.api.request.live.GetLiveCommissionProductListReq;
import com.yy.wga.goods.service.api.request.live.GetLiveNoticeRecordListReq;
import com.yy.wga.goods.service.api.request.live.GetLiveNoticeRecordQrCodeReq;
import com.yy.wga.goods.service.api.request.live.GetLiveRecordListReq;
import com.yy.wga.goods.service.api.request.live.GetLiveRecordQrCodeReq;
import com.yy.wga.goods.service.api.request.telent.GetBindTalentListReq;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

@RetrofitClient(baseUrl = "https://api.weixin.qq.com/channels/ec/promoter/")
public interface PromoterApi {

    // =================================  推客注册、绑定 START  =================================


    /**
     * 查询推广者的注册和绑定状态
     *
     * @param accessToken accessToken
     * @param request     request
     * @return JSONObject
     */
    @POST(value = "get_promoter_register_and_bind_status")
    JSONObject getPromoterRegisterAndBindStatus(@Query("access_token") String accessToken, @Body GetPromoterRegisterAndBindStatusReq request);


    /**
     * 批量获取绑定的推客信息。
     *
     * @param accessToken OAuth2访问令牌
     * @param request     请求参数对象
     * @return 包含响应数据的GetBindSharerListResp对象
     */
    @GET("get_bind_sharer_list")
    JSONObject getBindSharerList(@Query("access_token") String accessToken, @Body GetBindSharerListReq request);


    // =================================  推客注册、绑定 END  =================================


    // =================================  推客设置佣金 START  =================================


    /**
     * 设置单个推客的佣金率。
     *
     * @param accessToken OAuth2访问令牌
     * @param request     请求参数对象
     * @return 包含响应数据的JSONObject对象
     */
    @POST("set_sharer_commission_info")
    JSONObject setSharerCommission(@Query("access_token") String accessToken, @Body SetSharerCommissionReq request);

    /**
     * 设置单个推客的单个商品的佣金率。
     *
     * @param accessToken OAuth2访问令牌
     * @param request     请求参数对象
     * @return 包含响应数据的JSONObject对象
     */
    @POST("set_sharer_product_commission_info")
    JSONObject setSharerProductCommission(@Query("access_token") String accessToken, @Body SetSharerProductCommissionReq request);


    /**
     * 获取单个推客的单个商品的佣金率。
     *
     * @param accessToken OAuth2访问令牌
     * @param request     请求参数对象
     * @return 包含响应数据的对象
     */
    @POST("get_sharer_product_commission_info")
    JSONObject getSharerProductCommission(@Query("access_token") String accessToken, @Body GetSharerProductCommissionReq request);

    // =================================  推客设置佣金 END  =================================


    // =================================  直播间推广 START  =================================

    /**
     * 获取绑定的达人列表。
     *
     * @param accessToken OAuth2访问令牌
     * @param request     请求参数对象
     * @return 包含响应数据的JSONObject对象
     */
    @POST("get_bind_talent_list")
    JSONObject getBindTalentList(@Query("access_token") String accessToken, @Body GetBindTalentListReq request);


    /**
     * 获取达人平台的直播记录列表。
     *
     * @param accessToken OAuth2访问令牌
     * @param request     请求参数对象
     * @return 包含响应数据的JSONObject对象
     */
    @POST("get_live_record_list")
    JSONObject getLiveRecordList(@Query("access_token") String accessToken, @Body GetLiveRecordListReq request);


    /**
     * 获取达人平台的预约直播记录列表。
     *
     * @param accessToken OAuth2访问令牌
     * @param request     请求参数对象
     * @return 包含响应数据的JSONObject对象
     */
    @POST("get_live_notice_record_list")
    JSONObject getLiveNoticeRecordList(@Query("access_token") String accessToken, @Body GetLiveNoticeRecordListReq request);


    /**
     * 为某个推客生成单个直播的推广二维码。
     *
     * @param accessToken OAuth2访问令牌
     * @param request     请求参数对象
     * @return 包含响应数据的JSONObject对象
     */
    @POST("get_live_record_qr_code")
    JSONObject getLiveRecordQrCode(@Query("access_token") String accessToken, @Body GetLiveRecordQrCodeReq request);


    /**
     * 为某个推客生成单个直播预约的推广二维码。
     *
     * @param accessToken OAuth2访问令牌
     * @param request     请求参数对象
     * @return 包含响应数据的JSONObject对象
     */
    @POST("get_live_notice_record_qr_code")
    JSONObject getLiveNoticeRecordQrCode(@Query("access_token") String accessToken, @Body GetLiveNoticeRecordQrCodeReq request);

    /**
     * 获取某个达人平台当前直播的带货商品列表。
     *
     * @param accessToken OAuth2访问令牌
     * @param request     请求参数对象
     * @return 包含响应数据的JSONObject对象
     */
    @POST("get_live_commission_product_list")
    JSONObject getLiveCommissionProductList(@Query("access_token") String accessToken, @Body GetLiveCommissionProductListReq request);


    // =================================  直播间推广 END  =================================


    // =================================  短视频推广 START  =================================


    /**
     * 获取某个达人平台可推广短视频列表。
     *
     * @param accessToken OAuth2访问令牌
     * @param request     请求参数对象
     * @return 包含响应数据的JSONObject对象
     */
    @POST("get_feed_list")
    JSONObject getFeedList(@Query("access_token") String accessToken, @Body GetFeedListReq request);

    /**
     * 生成某个达人平台的某些短视频内嵌短视频卡片需要的 feedtoken。
     *
     * @param accessToken OAuth2访问令牌
     * @param request     请求参数对象
     * @return 包含响应数据的JSONObject对象
     */
    @POST("get_feed_promotion_info")
    JSONObject getFeedPromotionInfo(@Query("access_token") String accessToken, @Body GetFeedPromotionInfoReq request);


    // =================================  短视频推广 END  =================================

}
